package com.baidu.util;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import javax.servlet.http.HttpServletRequest;

import com.jfinal.kit.PathKit;

public class CommonUtil {
	
	/**
	 * 获取主机地址
	 */
	public static String getHostPath(HttpServletRequest request) {
		String path = request.getContextPath();
		// 获得的当前目录路径
		String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
		return basePath;
	}
	
	public static Map<String, Object> getReturnMsg(Integer status, String message, Object data){
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("status", status);
		map.put("message", message);
		map.put("data", data);
		return map;
	}
	
	/**
	* 更新properties文件的键值对
	* 如果该主键已经存在，更新该主键的值；
	* 如果该主键不存在，则插入一对键值。
	* properties文件必须在maven的resource下面
	* @param keyname 键名
	* @param keyvalue 键值
	*/
	public static void updateProperties(String filePath,String keyname,String keyvalue) {
		try {
			Properties props = new Properties();
			props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath));
	        // 调用 Hashtable 的方法 put，使用 getProperty 方法提供并行性。
	        // 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
	        OutputStream fos = new FileOutputStream(Thread.currentThread().getContextClassLoader().getResource(filePath).getPath());           
	        props.setProperty(keyname, keyvalue);
	        // 以适合使用 load 方法加载到 Properties 表中的格式，
	        // 将此 Properties 表中的属性列表（键和元素对）写入输出流
	        props.store(fos, "Update '" + keyname + "' value");
		} catch (IOException e) {
		    TestUtil.systemOutErr("属性文件更新错误");
		}
	}
	public static void main(String[] args) {
		System.out.println(Thread.currentThread().getContextClassLoader().getResource("custom.properties").getPath());
		System.out.println(CommonUtil.class.getClassLoader().getResource(""));
	}
}
